﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DevLegancy.Mailer
{
    public class Mailer
    {
        #region Variables
        //Bandera para validar el envio del Msg
        private bool isSended;

        #endregion

        /// <summary>
        /// Función para el envío del E-Mail
        /// </summary>
        /// <param name="destinoEmail">Correo al cual se va a enviar el mensaje, Email del cliente</param>
        /// <param name="correoFuente">Correo desde el q se va a enviar el mensaje, devlegancy mail</param>
        /// <param name="asunto">Información desde el XML</param>
        /// <param name="contenido">Información desde el XML</param>
        /// <param name="correoCC">Correo copia</param>
        /// <returns>Si se envió o no</returns>
        public bool EnviarEmailCliente(string destinoEmail, string correoFuente, string contraseña, string asunto, string contenido, string correoCC)
        {
            try
            {
                System.Net.Mail.MailMessage mmsg = new System.Net.Mail.MailMessage();

                //Direccion de correo electronico a la que queremos enviar el mensaje
                mmsg.To.Add(destinoEmail);

                //Asunto
                mmsg.Subject = asunto;
                mmsg.SubjectEncoding = System.Text.Encoding.UTF8;

                //Direccion de correo electronico que queremos que reciba una copia del mensaje
                mmsg.Bcc.Add(correoFuente); //Opcional

                //Cuerpo del Mensaje
                mmsg.Body = contenido;
                mmsg.BodyEncoding = System.Text.Encoding.UTF8;
                mmsg.IsBodyHtml = false; 

                mmsg.From = new System.Net.Mail.MailAddress(correoFuente);
                System.Net.Mail.SmtpClient cliente = new System.Net.Mail.SmtpClient();
                cliente.Credentials = new System.Net.NetworkCredential(correoFuente, contraseña);

                cliente.Host = "smtp.gmail.com";
                cliente.EnableSsl = true;

                cliente.Send(mmsg);
                this.isSended = true;
            }
            catch (System.Net.Mail.SmtpException ex)
            {
                this.isSended = false;
            }
            return this.isSended;
        }

        /// <summary>
        /// Función para el envío del E-Mail
        /// </summary>
        /// <param name="destinoEmail">Correo al cual se va a enviar el mensaje, Email DevLegancy</param>
        /// <param name="correoFuente">Correo desde el q se va a enviar el mensaje, devlegancy mail</param>
        /// <param name="asunto">Información desde el XML</param>
        /// <param name="contenido">Información desde el XML</param>
        /// <param name="correoCC">Correo copia</param>
        /// <returns>Si se envió o no</returns>
        public bool EnviarEmailDevLegancy(string destinoEmail, string mensaje, string asunto, string correoCC, string correoFuente, string contraseña)
        {
            try
            {
                System.Net.Mail.MailMessage mmsg = new System.Net.Mail.MailMessage();

                //Direccion de correo electronico a la que queremos enviar el mensaje
                mmsg.To.Add(destinoEmail);

                //Asunto
                mmsg.Subject = asunto;
                mmsg.SubjectEncoding = System.Text.Encoding.UTF8;

                if (!string.IsNullOrWhiteSpace(correoCC))
                    mmsg.Bcc.Add(correoCC);               
                

                //Cuerpo del Mensaje
                mmsg.Body = mensaje;
                mmsg.BodyEncoding = System.Text.Encoding.UTF8;
                mmsg.IsBodyHtml = false;

                mmsg.From = new System.Net.Mail.MailAddress(destinoEmail);
                System.Net.Mail.SmtpClient cliente = new System.Net.Mail.SmtpClient();
                cliente.Credentials = new System.Net.NetworkCredential("sebastian.csharp@gmail.com", "sohappytogether");

                cliente.Host = "smtp.gmail.com";
                cliente.EnableSsl = true;

                cliente.Send(mmsg);
                this.isSended = true;
            }
            catch (System.Net.Mail.SmtpException ex)
            {
                this.isSended = false;
            }
            return this.isSended;
        }
    }
}
